package org.xx.armory.swing.builders;

import org.xx.armory.objectparser.LineInfo;
import org.xx.armory.objectparser.ParsedObject;

import static org.apache.commons.lang3.StringUtils.trimToEmpty;
import static org.xx.armory.commons.Validators.notBlank;
import static org.xx.armory.commons.Validators.notNull;

/**
 * 选项卡UI模型。
 */
public class TabModel
        extends ParsedObject {
    private final String title;
    private final String description;
    private final ComponentModel child;

    /**
     * 构造选项卡UI模型。
     *
     * @param lineInfo
     *         源文件中的位置信息。
     * @param title
     *         选项卡的标题。
     * @param description
     *         选项卡的描述。
     * @param child
     *         选项卡的子元素。
     */
    public TabModel(
            LineInfo lineInfo,
            String title,
            String description,
            ComponentModel child
    ) {
        super(lineInfo);

        this.title = notBlank(title, "title").trim();
        this.description = trimToEmpty(description);
        this.child = notNull(child, "child");
    }

    public final String getTitle() {
        return this.title;
    }

    public final String getDescription() {
        return this.description;
    }

    public final ComponentModel getChild() {
        return this.child;
    }
}
